package com.tx.dao;

import com.tx.entity.Blog;
import com.tx.entity.Page;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * @Author: tcx
 * @description: 博客数据持久化层接口
 * @Date: 2019/11/5
 **/
@Repository("blogDao")
public interface BlogDao {
    /* *
     * @description:  添加博客
     * @author tcx
     * @date 2019/11/5
     * @param blog
     * @return void
     */
    Integer  insert(Blog blog);
    /* *
     * @description:  修改博客
     * @author tcx
     * @date 2019/11/5
     * @param blog
     * @return void
     */
    Integer  update(Blog blog);
    /* *
     * @description:  删除博客
     * @author tcx
     * @date 2019/11/5
     * @param id
     * @return void
     */
    Integer  delete(Integer id);
    /* *
     * @description:  根据博客id查询博客
     * @author tcx
     * @date 2019/11/5
     * @param id
     * @return com.tx.entity.Blog
     */
    Blog  select(Integer id);
    /* *
     * @description:  查询所有博客
     * @author tcx
     * @date 2019/11/5
     * @param
     * @return java.util.List<com.tx.entity.Blog>
     */
    List<Blog> selectAll();
    /* *
     * @description:  根据关键字搜索博客总数
     * @author tcx
     * @date 2019/11/13
     * @param key
     * @return java.lang.Integer
     */
    Integer selectBlogKeyCount(String key);
    /* *
     * @description:  根据关键字搜索博客
     * @author tcx
     * @date 2019/11/5
     * @param key
     * @return java.util.List<com.tx.entity.Blog>
     */
    List<Blog> selectKey(@Param("key") String key,@Param("beginIndex") Integer beginIndex,@Param("everyPage")Integer everyPage);
    /* *
     * @description:  根据用户id获取用户博客
     * @author tcx
     * @date 2019/11/10
     * @param uId
     * @return java.util.List<com.tx.entity.Blog>
     */
    List<Blog> selectByUser(@Param("uId") Integer uId,@Param("beginIndex") Integer beginIndex,@Param("everyPage")Integer everyPage);
    /* *
     * @description:  根据用户id查询用户所有博客总数
     * @author tcx
     * @date 2019/11/10
     * @param null
     * @return
     */
    Integer selectByUserCount(Integer id);
    /* *
     * @description:  查询所有博客总记录数
     * @author tcx
     * @date 2019/11/12
     * @param
     * @return java.lang.Integer
     */
    Integer selectBlogCount();
    /* *
     * @description:  分页查询所有博客，按时间排序
     * @author tcx
     * @date 2019/11/12
     * @param page
     * @return java.util.List<com.tx.entity.Blog>
     */
    List<Blog> selectBlogByPage(Page page);
    /* *
     * @description:  分类查询博客总记录数
     * @author tcx
     * @date 2019/11/13
     * @param tId
     * @return java.lang.Integer
     */
    Integer selectBlogTypeCount(Integer tId);
    /* *
     * @description:    按分类查询所有博客
     * @author tcx
     * @date 2019/11/13
     * @param page
     * @param tId
     * @return java.util.List<com.tx.entity.Blog>
     */
    List<Blog> selectBlogByTypePage(@Param("beginIndex") Integer beginIndex,@Param("everyPage")Integer everyPage,@Param("tId") Integer tId);
    /* *
     * @description: 查询最新发布的十条博客
     * @author tcx
     * @date 2019/11/13
     * @param
     * @return java.util.List<com.tx.entity.Blog>
     */
    List<Blog> selectNew();
    /* *
     * @description:  修改博客评论数
     * @author tcx
     * @date 2019/11/16
     * @param blog
     * @return void
     */
    void updateCount(Blog blog);
    /* *
     * @description:  查询用户最新十条博客
     * @author tcx
     * @date 2019/11/16
     * @param uId
     * @return java.util.List<com.tx.entity.Blog>
     */
    List<Blog> selectUserNew(Integer uId);
    //数据总数
    public Integer getTotal(Map<String,Object> map);
    //查询所有用户
    public List<Blog> selectBlogKey(Map<String,Object> map);
}
